﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
using Entidades;

namespace Acceso_a_Datos
{
    public class GrillaJugadaDatos
    {
        public GrillaJugadaEntidades Obtener(int idUsuario, int idGrilla)
        {
            string consulta = "SELECT IdUsuario, IdGrilla, Puntaje FROM GrillasJugadas "
                + "WHERE Idusuario = @idUsuario AND IdGrilla = @idGrilla";

            SqlParameter[] parametros = new SqlParameter[2];
            parametros[0] = new SqlParameter("idUsuario", SqlDbType.Int);
            parametros[0].Value = idUsuario;
            parametros[1] = new SqlParameter("idGrilla", SqlDbType.Int);
            parametros[1].Value = idGrilla;

            ConexionBD conexion = new ConexionBD();
            DataTable tablaDatos = conexion.SelectQuery(consulta, parametros);
            
            if (tablaDatos.Rows.Count > 0)
            {
                GrillaJugadaEntidades grillaJugada = new GrillaJugadaEntidades();
                grillaJugada.IdUsuario = tablaDatos.Rows[0].Field<int>("IdUsuario");
                grillaJugada.IdGrilla = tablaDatos.Rows[0].Field<int>("IdGrilla");
                grillaJugada.Puntaje = tablaDatos.Rows[0].Field<int>("Puntaje");

                return grillaJugada;
            }
            else
                return null;
        }

        public List<GrillaJugadaEntidades> Obtener(int idUsuario)
        {
            ConexionBD conexion = new ConexionBD();
            
            SqlParameter[] parametros = new SqlParameter[1];
            parametros[0] = new SqlParameter("idUsuario", idUsuario);

            DataTable tablaDatos = conexion.SelectQuerySP("ObtenerGrillasJugadasPorUsuario", parametros);

            if (tablaDatos.Rows.Count > 0)
            {
                List<GrillaJugadaEntidades> grillasJugadas = new List<GrillaJugadaEntidades>();

                foreach (DataRow fila in tablaDatos.Rows)
                {
                    GrillaJugadaEntidades grillaJugadaEnt = new GrillaJugadaEntidades();
                    grillaJugadaEnt.IdUsuario = fila.Field<int>("IdUsuario");
                    grillaJugadaEnt.IdGrilla = fila.Field<int>("IdGrilla");
                    grillaJugadaEnt.Puntaje = fila.Field<int>("Puntaje");

                    grillasJugadas.Add(grillaJugadaEnt);
                }

                return grillasJugadas;
            }
            else
                return null;
        }

        public void Insertar(GrillaJugadaEntidades grillaJugada)
        {
            string consulta = "INSERT INTO GrillasJugadas VALUES (@idUsuario, @idGrilla, @puntaje)";

            SqlParameter[] parametros = new SqlParameter[3];
            parametros[0] = new SqlParameter("idUsuario", grillaJugada.IdUsuario);
            parametros[1] = new SqlParameter("idGrilla", grillaJugada.IdGrilla);
            parametros[2] = new SqlParameter("puntaje", grillaJugada.Puntaje);

            ConexionBD conexion = new ConexionBD();
            conexion.ExecuteNonQuery(consulta, parametros);
        }

        public void Actualizar(GrillaJugadaEntidades grillaJugada)
        {
            string consulta = "UPDATE GrillasJugadas SET IdUsuario = @idUsuario, IdGrilla = @idGrilla, Puntaje = @puntaje "
                + "WHERE Idusuario = @idUsuario AND IdGrilla = @idGrilla";

            SqlParameter[] parametros = new SqlParameter[3];
            parametros[0] = new SqlParameter("idUsuario", grillaJugada.IdUsuario);
            parametros[1] = new SqlParameter("idGrilla", grillaJugada.IdGrilla);
            parametros[2] = new SqlParameter("puntaje", grillaJugada.Puntaje);

            ConexionBD conexion = new ConexionBD();
            conexion.ExecuteNonQuery(consulta, parametros);
        }

        public void BorrarGrillasJugadas(int idUsuario)
        {
            string consulta = "DELETE FROM GrillasJugadas WHERE IdUsuario = @idUsuario";

            SqlParameter[] parametros = new SqlParameter[1];
            parametros[0] = new SqlParameter("idUsuario", idUsuario);

            ConexionBD conexion = new ConexionBD();
            conexion.ExecuteNonQuery(consulta, parametros);
        }
    }
}
